let observer = require('common/lib/observer').observer
let common_store = require('common/store/common_store').common_store
let notice_store = require("component/notice/notice_store").store
let train_set_store = require("component/train_set/train_set_store").train_set_store


App(observer({
	props: {
		
	},
	data: {
		common_store: new common_store(),
		notice_store: notice_store,
	},
	onLaunch() {
		this.updateApp()
		// 初始化训练集
		// op_train_set.init_train_set()
		this.get_sys_info()
		
		
	},
	onShow() {
		wx.setKeepScreenOn({
			keepScreenOn: true
		})
	},
	updateApp: function () {
		const updateManager = wx.getUpdateManager()
		updateManager.onCheckForUpdate(function (res) {
			// 请求完新版本信息的回调
			if (res.hasUpdate) {
				wx.showLoading({
					title: '更新下载中...',
				})
			}
		})
		updateManager.onUpdateReady(function () {
			wx.hideLoading();
			wx.showModal({
				title: '更新提示',
				content: '新版本已经准备好，是否重启应用？',
				success: function (res) {
					if (res.confirm) {
						// 新的版本已经下载好，调用 applyUpdate 应用新版本并重启
						updateManager.applyUpdate()
					}
				}
			})

		})
		updateManager.onUpdateFailed(function () {
			// 新的版本下载失败
			wx.hideLoading();
			wx.showToast({ title: '下载失败...', icon: "none" });
		})
	},
	// 获取设备信息
	get_sys_info() {
		Object.assign(this.data.common_store.sys_info, wx.getSystemInfoSync());	
		let s = this.data.common_store.sys_info
		s.px_times = s.windowWidth / 750
		s.status_bar_height_rpx = s.statusBarHeight / s.px_times

		// 安卓设备 // 导航栏建议高度 = 胶囊高度（32xp） + 状态栏到胶囊距离（8px） * 2
		s.navi_height_px = 48
		s.status_bar_margin_px = 8
		// 获取状态栏高度 单位： px
		// IOS设备
		if(s.system.indexOf("iOS") > -1) {
			// 导航栏建议高度 = 胶囊高度（32xp） + 状态栏到胶囊距离（6px） * 2
			s.navi_height_px = 44
			s.status_bar_margin_px = 6
		}			
		// 导航建议高度 rpx
		
		s.navi_height_rpx = s.navi_height_px / s.px_times
		// 状态栏高与胶囊间距 rpx
		s.status_bar_margin_rpx = s.status_bar_margin_px / s.px_times

		// 单导航高度
		s.navi_height_1 = s.status_bar_height_rpx + s.navi_height_rpx
		// 胶囊菜单按钮高度 rpx;
		s.mb_height_rpx = 32 / s.px_times
		// 胶囊菜单按钮信息
		s.mb_info = wx.getMenuButtonBoundingClientRect()
		// 胶囊按钮的宽度 rpx
		s.mb_info.width_rpx = s.mb_info.width / s.px_times
		// 屏幕高度 rpx
		s.window_height_rpx = s.windowHeight / s.px_times 
		console.log(this.data.common_store.sys_info)
	},
	go(item) {
		if(item.hasOwnProperty("target")) {
			item = item.target.dataset.item
		}
		wx.navigateTo({
			url: item
		})
	},
	go_back() {
		wx.navigateBack({})
	},
	// 设置反馈信息
	resp(info) {
		this.data.common_store.resp_info = info
	},
	// 设置状态
	set_state(item, state) {
		this.data.common_store.state[item] = state
		// this.data.common_store.set_state(item, state)
	},
	// 获取状态
	get_state(item) {
		return this.data.common_store.state[item]
	},
	// 提示信息
	show_notice(msg, show_type = "") {
		this.data.notice_store.show(msg, show_type);
	},
	show_n(arg) {
		this.data.notice_store.show_n(arg)
	},
	hide_notice() {
		this.data.notice_store.hide()
	},
	// 设置字符集
	show_train_set_box() {
		train_set_store.show_box()
	},
	// 调试用的
	cl(msg) {
		console.log(msg)
	},
	// 产生随机字符串
	// rand_str(randomFlag, , max){
	random_str(l) {
		let str = ""
		// range = min,
		let arr = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '?', '/']
	 
		// 随机长度产生
		// if(randomFlag){
		// 	range = Math.round(Math.random() * (max-min)) + min;
		// }
		for(let i=0; i<l; i++){
			let pos = Math.round(Math.random() * (arr.length-1));
			str += arr[pos];
		}
		return str;
	},
	// 将字符串转成电码列表
	get_code_list(s) {
		let c_list = []
		for(let i = 0; i < s.length; i ++) {
			c_list.push(this.data.common_store.w2c[s[i]])
		}
		return c_list
	}
}))